﻿/********************************************************************
	created:	2008/04/16
	created:	16:4:2008   11:07
	filename: 	F:\Workspace\Midapex\Src\Net\OurFtpServer\Program.cs
	file path:	F:\Workspace\Midapex\Src\Net\OurFtpServer
	file base:	Program
	file ext:	cs
	author:		Deng.Yangjun@Gmail.com
	
	purpose:	
*********************************************************************/
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using Midapex.Net.Ftp;
using Midapex.Net;

namespace ControllerClient
{
    class OurFtpServer
    {
        public  void conn(String path)
        {
            Trace.Listeners.Add(new ConsoleTraceListener());

            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            try
            {
               
                using (FtpServer server = new FtpServer())
                {
                    Console.WriteLine("测试帐号:anonymous(匿名登陆，具有读权限), ftp(密码:ftp,具有读写权限)");

                    /*
                     * 服务器的最大连接数
                     */
                    server.Capacity = 1000;
                    server.Port = 2121;

                    /*
                     * 连接超时时间
                     */
                    server.HeartBeatPeriod = 120000;  //120秒

                    /*
                     * 创建一个使用FTP的用户，
                     */
                    FtpUser user = new FtpUser("kcrx");
                    user.Password = "kcrx8888";
                    user.AllowWrite = true;
                    user.HomeDir = path;

                    /*
                     * 限制该帐号的用户的连接服务器的最大连接数
                     * 也就是限制该使用该帐号的FTP同时连接服务器的数量。
                     */
                    user.MaxConnectionCount = 3;

                    /*
                     * 限制用户的最大上传文件为20M，超过这个值上传文件会失败。
                     * 默认不限制该值，可以传输大文件。
                     */
                    user.MaxUploadFileLength = 1024 * 1024 * 20;
                    server.AddUser(user);

                    //把当前目录作为匿名用户的目录，测试目的(必须指定)
                    server.AnonymousUser.HomeDir = Environment.CurrentDirectory;

                    server.Start();
                    //Console.WriteLine("Press enter to exit...");
                   
                    //server.Stop();
                }
            }
            catch (System.Exception e)
            {
                NetDebuger.PrintErrorMessage("FATAL ERROR:" + e.Message);
            }

        }

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            NetDebuger.PrintErrorMessage("UNHANDLED ERROR:" + e.ExceptionObject.ToString());
        }
    }
}
